/*
 * JInternalFrameComponentesContenedores.java
 *
 * Copyright 2011 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Created on 19/04/2011, 11:25:16 PM
 */

package com.ufps.cuatro.vistas.asistente;

import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

import org.jdesktop.application.Action;
import org.jdesktop.application.Task;

import com.ufps.cuatro.CuatroApp;
import com.ufps.cuatro.modelo.analizador.UtilAnalizador;
import com.ufps.cuatro.modelo.representacion.componente.Componente;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedorEspejo;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedorLibre;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegrador;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorExtra;
import com.ufps.cuatro.modelo.representacion.UtilRepresentacion;
import com.ufps.cuatro.util.Bandera;
import com.ufps.cuatro.util.ImplementarAyudaStandar;
import com.ufps.cuatro.util.InformacionNodo;
import com.ufps.cuatro.util.Utileria;
import com.ufps.cuatro.util.generadores.GeneradorArbol;
import com.ufps.cuatro.util.generadores.GeneradorComponentes;
import com.ufps.cuatro.util.generadores.GeneradorGUI;
import com.ufps.cuatro.controlador.listener.ControllerListenerPopupJTree;
import com.ufps.cuatro.util.render.MyTreeCellRender;
import com.ufps.cuatro.controlador.render.UtilRender;
import com.ufps.cuatro.util.wizard.ObjectTempSwapWizard;
import com.ufps.cuatro.util.wizard.UtilWizard;
import com.ufps.cuatro.vistas.JDialogBibliotecaComponentes;

/**
 * <i><b>JInternalFrameComponentesContenedores:</b></i> @DefinicionClase
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 19/04/2011
 * @see javax.swing.JInternalFrame
 * @see Observer
 * @see ImplementarAyudaStandar
 */
public class JInternalFrameComponentesContenedores extends javax.swing.JInternalFrame  implements Observer{
    private static final long serialVersionUID = -3854523316532363858L;

    private Object objComponenteContenedorSeleccionado;        
    private Object objComponenteIntegradorSeleccionado;        
    
    /** Creates new form JInternalFrameComponentesContenedores */
    public JInternalFrameComponentesContenedores() {
        initComponents();
        this.setFrameIcon(Utileria.leerIconoApp(Utileria.MODO_16x16));       
        this.crearArbolComponentesContenedores();        
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jToolBar1 = new javax.swing.JToolBar();
        jButtonAL = new javax.swing.JButton();
        jButtonAE = new javax.swing.JButton();
        jSeparator5 = new javax.swing.JToolBar.Separator();
        jButtonAddFromBiblioteca = new javax.swing.JButton();
        jSeparator4 = new javax.swing.JToolBar.Separator();
        jButtonSalir = new javax.swing.JButton();
        jSeparator2 = new javax.swing.JToolBar.Separator();
        jButtonHelp = new javax.swing.JButton();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTreeComponentesContenedores = new javax.swing.JTree();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTreeComponentesIntegradores = new javax.swing.JTree();

        setClosable(true);
        setIconifiable(true);
        setResizable(true);
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance().getContext().getResourceMap(JInternalFrameComponentesContenedores.class);
        setTitle(resourceMap.getString("Form.title")); // NOI18N
        setName("Form"); // NOI18N

        jToolBar1.setFloatable(false);
        jToolBar1.setRollover(true);
        jToolBar1.setName("jToolBar1"); // NOI18N

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance().getContext().getActionMap(JInternalFrameComponentesContenedores.class, this);
        jButtonAL.setAction(actionMap.get("crearContenedorPorAsistente")); // NOI18N
        jButtonAL.setFocusable(false);
        jButtonAL.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonAL.setName("jButtonAL"); // NOI18N
        jButtonAL.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(jButtonAL);

        jButtonAE.setAction(actionMap.get("crearContenedorPorAsistenteEspejo")); // NOI18N
        jButtonAE.setFocusable(false);
        jButtonAE.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonAE.setName("jButtonAE"); // NOI18N
        jButtonAE.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(jButtonAE);

        jSeparator5.setName("jSeparator5"); // NOI18N
        jToolBar1.add(jSeparator5);

        jButtonAddFromBiblioteca.setAction(actionMap.get("addFromBiblioteca")); // NOI18N
        jButtonAddFromBiblioteca.setText(resourceMap.getString("jButtonAddFromBiblioteca.text")); // NOI18N
        jButtonAddFromBiblioteca.setFocusable(false);
        jButtonAddFromBiblioteca.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonAddFromBiblioteca.setName("jButtonAddFromBiblioteca"); // NOI18N
        jButtonAddFromBiblioteca.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(jButtonAddFromBiblioteca);

        jSeparator4.setName("jSeparator4"); // NOI18N
        jToolBar1.add(jSeparator4);

        jButtonSalir.setAction(actionMap.get("cancelar")); // NOI18N
        jButtonSalir.setFocusable(false);
        jButtonSalir.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonSalir.setName("jButtonSalir"); // NOI18N
        jButtonSalir.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(jButtonSalir);

        jSeparator2.setName("jSeparator2"); // NOI18N
        jToolBar1.add(jSeparator2);

        jButtonHelp.setAction(actionMap.get("helpFrame")); // NOI18N
        jButtonHelp.setFocusable(false);
        jButtonHelp.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonHelp.setName("jButtonHelp"); // NOI18N
        jButtonHelp.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(jButtonHelp);

        jTabbedPane1.setName("jTabbedPane1"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        jTreeComponentesContenedores.setName("jTreeComponentesContenedores"); // NOI18N
        jTreeComponentesContenedores.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                jTreeComponentesContenedoresValueChanged(evt);
            }
        });
        jScrollPane1.setViewportView(jTreeComponentesContenedores);

        jTabbedPane1.addTab(resourceMap.getString("jScrollPane1.TabConstraints.tabTitle"), jScrollPane1); // NOI18N

        jScrollPane2.setName("jScrollPane2"); // NOI18N

        jTreeComponentesIntegradores.setName("jTreeComponentesIntegradores"); // NOI18N
        jTreeComponentesIntegradores.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                jTreeComponentesIntegradoresValueChanged(evt);
            }
        });
        jScrollPane2.setViewportView(jTreeComponentesIntegradores);

        jTabbedPane1.addTab(resourceMap.getString("jScrollPane2.TabConstraints.tabTitle"), jScrollPane2); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 397, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 377, Short.MAX_VALUE)
                .addGap(10, 10, 10))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jTreeComponentesContenedoresValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_jTreeComponentesContenedoresValueChanged
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) (evt.getPath().getLastPathComponent());
        Object nodeInfo = node.getUserObject();
        InformacionNodo objNodoSeleccionado = (InformacionNodo) nodeInfo;
        try {            
            this.objComponenteContenedorSeleccionado = objNodoSeleccionado.getObjElemento();
            if (node.isRoot()) {
                //El nodo seleccionado es la raiz del arbol                
            } else if (node.isLeaf()) {
                //El nodo seleccionado es una hoja                
            } else {
                //El nodo seleccionado es una rama                
            }  
            this.createPopupMenuComponenteContenedor();
        } catch (java.lang.ClassCastException ex) {
            Logger.getLogger(JInternalFrameComponentesContenedores.class.getName()).log(Level.SEVERE, null, ex);            
        }
    }//GEN-LAST:event_jTreeComponentesContenedoresValueChanged

    private void jTreeComponentesIntegradoresValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_jTreeComponentesIntegradoresValueChanged
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) (evt.getPath().getLastPathComponent());
        Object nodeInfo = node.getUserObject();
        InformacionNodo objNodoSeleccionado = (InformacionNodo) nodeInfo;
        try {            
            this.objComponenteIntegradorSeleccionado = objNodoSeleccionado.getObjElemento();
            if (node.isRoot()) {
                //El nodo seleccionado es la raiz del arbol                
            } else if (node.isLeaf()) {
                //El nodo seleccionado es una hoja                
            } else {
                //El nodo seleccionado es una rama                
            }  
            this.createPopupMenuComponenteIntegrador();
        } catch (java.lang.ClassCastException ex) {
            Logger.getLogger(JInternalFrameComponentesContenedores.class.getName()).log(Level.SEVERE, null, ex);            
        }
    }//GEN-LAST:event_jTreeComponentesIntegradoresValueChanged

    /**
     * @DefinicionMetodo
     */
    @Action
    public void crearContenedorPorAsistente() {        
       if(UtilWizard.runWizard(UtilWizard.WIZARD_ASISTENTE_LIBRE) == 0){
           Integer contenedor = (Integer) UtilWizard.objTempSwap.get(ObjectTempSwapWizard.CONTENEDOR_REPRESENTACION);
           //Crear un Componente Libre
           if(contenedor.intValue() == 1){
               ComponenteDistribuidorIntegradorExtra obj = GeneradorComponentes.construirComponenteIntegradorExtra(UtilWizard.objTempSwap);
               if(obj != null){
                   this.addContenedor(obj);
               }
           }
           else{
               ComponenteDistribuidorContenedorLibre obj = GeneradorComponentes.construirComponenteAsistenteLibre(UtilWizard.objTempSwap);
               if(obj != null){
                   this.addContenedor(obj);
               }               
           }
        }
    }

    /**
     * @DefinicionMetodo
     */
    @Action
    public void crearContenedorPorAsistenteEspejo() {
        if(UtilAnalizador.objClases.isEmpty() &&
                UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesGeneradores().isEmpty()){
                Utileria.mostrarMensaje(
                        this,
                        Utileria.leerRecursoTexto("Utileria.msg.no.load.mundo"),
                        "",
                        JOptionPane.WARNING_MESSAGE);
                return;
        }
        if(UtilWizard.runWizard(UtilWizard.WIZARD_ASISTENTE_ESPEJO_STANDARD) == 0){
            //Crear un Componente Espejo
            ComponenteDistribuidorContenedorEspejo obj = GeneradorComponentes.construirComponenteAsistenteEspejo(UtilWizard.objTempSwap);
            if(obj != null){
                this.addContenedor(obj);
            }
        }
    }

    /**
     * Cancela el proceso de creacion de contenedores 
     */
    @Action
    public void cancelar() {        
        if(Utileria.confirmarOrden(CuatroApp.getApplication().getMainFrame(), java.util.ResourceBundle.getBundle("com/ufps/cuatro/vistas/asistente/resources/JInternalFrameComponentesContenedores").getString("¿DESEA CANCELAR EL PROCESO?"), ""))
            dispose();
    }

    /**
     * @DefinicionMetodo
     */
    @Action
    public void helpFrame() {
        UtilRender.openDialogHelp(JInternalFrameComponentesContenedores.class, getTitle());
    }
    
    private boolean crearArbolComponentesContenedores(){
        ArrayList<ComponenteDistribuidorContenedor> objTempComponentesContenedores =
                UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesContenedores();
        DefaultMutableTreeNode objRaiz = 
                GeneradorArbol.crearEstructuraColeccionComponentesContenedores(objTempComponentesContenedores);                                   
        JTree objArbol = new JTree(objRaiz);
        this.jTreeComponentesContenedores.setModel(objArbol.getModel());
        MyTreeCellRender objRender = new MyTreeCellRender(Utileria.ARBOL_COMPONENTES);
        this.jTreeComponentesContenedores.setCellRenderer(objRender);        
        this.jTreeComponentesContenedores.setSelectionRow(0); 
        crearArbolComponentesIntegradores();
        return true;
    }
    
    private boolean crearArbolComponentesIntegradores(){
        ArrayList<ComponenteDistribuidorIntegrador> objTempComponentesIntegradores =
                UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesIntegradores();
        DefaultMutableTreeNode objRaiz = 
                GeneradorArbol.crearEstructuraColeccionComponentesIntegradores(objTempComponentesIntegradores);                                   
        JTree objArbol = new JTree(objRaiz);
        this.jTreeComponentesIntegradores.setModel(objArbol.getModel());
        MyTreeCellRender objRender = new MyTreeCellRender(Utileria.ARBOL_COMPONENTES);
        this.jTreeComponentesIntegradores.setCellRenderer(objRender);        
        this.jTreeComponentesIntegradores.setSelectionRow(0);        
        return true;
    }
    
    public void update(Observable o, Object arg) {
        if(o instanceof Bandera){
            Bandera objBandera = (Bandera) o;
            switch(objBandera.getEstado()){                
                case Bandera.UPDATE_COMPONENTE:
                    if(objBandera.getObj() instanceof ComponenteDistribuidorContenedorLibre){
                        ComponenteDistribuidorContenedorLibre objComponente = 
                                (ComponenteDistribuidorContenedorLibre) objBandera.getObj();
                        this.setContenedor(objComponente);
                    }                    
                    break;
            }
        }
    }
    
    private void addContenedor(ComponenteDistribuidorIntegradorExtra obj){ 
        if(UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesIntegradores().contains(obj)){
            int i = UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesIntegradores().indexOf(obj);
            UtilRepresentacion.objBibliotecaTrabajoLocal.set(i, obj);            
            this.crearArbolComponentesIntegradores();                    
        }
        else{
            UtilRepresentacion.objBibliotecaTrabajoLocal.add(obj);
            this.crearArbolComponentesIntegradores();
        }                          
    }
    
    private void addContenedor(ComponenteDistribuidorContenedorLibre obj){ 
        if(UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesContenedores().contains(obj)){
            int i = UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesContenedores().indexOf(obj);
            UtilRepresentacion.objBibliotecaTrabajoLocal.set(i, obj);            
            this.crearArbolComponentesContenedores();                    
        }
        else{
            UtilRepresentacion.objBibliotecaTrabajoLocal.add(obj);
            this.crearArbolComponentesContenedores();
        }                          
    }
    
    private void setContenedor(ComponenteDistribuidorContenedorLibre obj){  
        if(UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesContenedores().contains(obj)){
            int i = UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesContenedores().indexOf(obj);
            UtilRepresentacion.objBibliotecaTrabajoLocal.set(i, obj);            
            this.crearArbolComponentesContenedores();                    
        }        
    }
    
    private void setContenedor(ComponenteDistribuidorContenedorEspejo obj){  
        if(UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesContenedores().contains(obj)){
            int i = UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesContenedores().indexOf(obj);
            UtilRepresentacion.objBibliotecaTrabajoLocal.set(i, obj);            
            this.crearArbolComponentesContenedores();                    
        }        
    }
    
    private void addContenedor(ComponenteDistribuidorContenedorEspejo obj){
        if(UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesContenedores().contains(obj)){
            int i = UtilRepresentacion.objBibliotecaTrabajoLocal.getObjComponentesContenedores().indexOf(obj);
            UtilRepresentacion.objBibliotecaTrabajoLocal.set(i, obj);            
            this.crearArbolComponentesContenedores();                    
        }
        else{
            UtilRepresentacion.objBibliotecaTrabajoLocal.add(obj);
            this.crearArbolComponentesContenedores();
        }
    }    

    /**
     * @DefinicionMetodo
     * @return @DefinicionReturn
     */
    @Action
    public Task vistaPrevia() {
        Object objSeleccionado =
                (jTabbedPane1.getSelectedIndex() == 0) ? objComponenteContenedorSeleccionado : objComponenteIntegradorSeleccionado;
        if(objSeleccionado == null){
            Utileria.mostrarMensaje(JInternalFrameComponentesContenedores.this, java.util.ResourceBundle.getBundle("com/ufps/cuatro/vistas/asistente/resources/JInternalFrameComponentesContenedores").getString("NO HA SELECCIONADO UN CONTENEDOR."), "", JOptionPane.WARNING_MESSAGE);
            return null;
        }                
        else if(objSeleccionado instanceof ComponenteDistribuidor){
            
            ComponenteDistribuidor objComponenteDistribuidor =
                        (ComponenteDistribuidor) objSeleccionado;                
//            if(!objComponenteDistribuidor.isFinish()){
//                Utileria.mostrarMensaje(this, "El Componente esta siendo Editado.", "", JOptionPane.WARNING_MESSAGE);
//                return null;
//            }            
            return new VistaPreviaTask(org.jdesktop.application.Application.getInstance(com.ufps.cuatro.CuatroApp.class), objComponenteDistribuidor);
        }
        return null;        
    }

    private class VistaPreviaTask extends org.jdesktop.application.Task<Object, Void> {
        private Componente objComponente;
        VistaPreviaTask(org.jdesktop.application.Application app, Componente objComponente) {            
            // Runs on the EDT.  Copy GUI state that
            // doInBackground() depends on from parameters
            // to VistaPreviaTask fields, here.
            super(app);
            this.objComponente = objComponente;
        }
        @Override protected Object doInBackground() {
           try {
                setProgress(20, 0, 100);
                setMessage(java.util.ResourceBundle.getBundle("com/ufps/cuatro/vistas/asistente/resources/JInternalFrameComponentesContenedores").getString("GENERANDO INTERFAZ DE CONTROLES."));
                Thread.sleep(500);
                return GeneradorGUI.crearVistaPreviaPanel((Componente) objComponente);
            } catch (InterruptedException ex) {
                Logger.getLogger(JInternalFrameComponentesContenedores.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }
        @Override protected void succeeded(Object result) {
            if(result == null){
                try {
                    setProgress(0, 0, 100);
                    setMessage(java.util.ResourceBundle.getBundle("com/ufps/cuatro/vistas/asistente/resources/JInternalFrameComponentesContenedores").getString("LA VISTA PREVIA NO HA SIDO GENERADA."));
                    Thread.sleep(500);
                    return;
                } catch (InterruptedException ex) {
                    Logger.getLogger(JInternalFrameComponentesContenedores.class.getName()).log(Level.SEVERE, null, ex);                    
                }
            }
            else{
                try {
                    setProgress(99, 0, 100);
                    setMessage(java.util.ResourceBundle.getBundle("com/ufps/cuatro/vistas/asistente/resources/JInternalFrameComponentesContenedores").getString("INTERFAZ GENERADA CORRECTAMENTE."));
                    Thread.sleep(500);                    
                    JPanel objPanel = (JPanel) result;
                    JFrame objFrame = CuatroApp.getApplication().getMainFrame();
                    JDialog objVentana = new JDialog();                                                            
                    objVentana.setTitle(objComponente.getName()); 
                    objVentana.add(objPanel);
                    objVentana.setLocationRelativeTo(objFrame);
                    objVentana.setModal(true);
                    CuatroApp.getApplication().show(objVentana);
                } catch (InterruptedException ex) {
                    Logger.getLogger(JInternalFrameComponentesContenedores.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }       
    }
       
    /**
     * @DefinicionMetodo
     */
    private void createPopupMenuComponenteContenedor() {        
        ControllerListenerPopupJTree objMyPopup = new ControllerListenerPopupJTree(this, jTreeComponentesContenedores, objComponenteContenedorSeleccionado);
        this.jTreeComponentesContenedores.addMouseListener(objMyPopup);     
    }    
    
    /**
     * @DefinicionMetodo
     */
    private void createPopupMenuComponenteIntegrador() {        
        ControllerListenerPopupJTree objMyPopup = new ControllerListenerPopupJTree(this, jTreeComponentesIntegradores, objComponenteIntegradorSeleccionado);
        this.jTreeComponentesIntegradores.addMouseListener(objMyPopup);     
    }    

    /**
     * @DefinicionMetodo
     * @return @DefinicionReturn
     */
    public Object getObjSeleccionado() {
        return objComponenteContenedorSeleccionado;
    }
    
    /**
     * @DefinicionMetodo
     */
    @Action
    public void addFromBiblioteca() {
        JDialogBibliotecaComponentes objDialog = new JDialogBibliotecaComponentes(CuatroApp.getApplication().getMainFrame(), this);
        CuatroApp.getApplication().show(objDialog);
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonAE;
    private javax.swing.JButton jButtonAL;
    private javax.swing.JButton jButtonAddFromBiblioteca;
    private javax.swing.JButton jButtonHelp;
    private javax.swing.JButton jButtonSalir;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JToolBar.Separator jSeparator2;
    private javax.swing.JToolBar.Separator jSeparator4;
    private javax.swing.JToolBar.Separator jSeparator5;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JToolBar jToolBar1;
    private javax.swing.JTree jTreeComponentesContenedores;
    private javax.swing.JTree jTreeComponentesIntegradores;
    // End of variables declaration//GEN-END:variables

}
